# 编写一个函数 get_sum_of_lists，接受多个列表作为参数，并返回它们对应位置元素的和的列表 短列表缺少的用0补齐.

from itertools import zip_longest


def get_sum_of_lists(*args):
    ziped_list = zip_longest(*args, fillvalue=0)
    result = list(map(sum, ziped_list))
    return result


lst1 = [1, 2, 3, 4, 5, 6, 7, 8]
lst2 = [6, 5, 4, 3, 2, 1]
lst3 = [6, 5, 4, 3]

print(get_sum_of_lists(lst1, lst2, lst3))


# 实现一个函数 get_max_length(words)，接收一个字符串列表 words，返回列表中最长的单词的长度.
# 例如，对于输入列表 ['apple', 'banana', 'orange', 'watermelon']，函数应该返回 10，因为最长的单词是 'watermelon'，它的长度为 10

def get_max_length(words):
    return max(map(len, words))


lst = ['apple', 'banana', 'orange', 'watermelon']
print(get_max_length(lst))


# 实现一个函数`get_primes`, 接收一个参数n, 函数功能是: 返回n以内(包含n)的所有的质数. get_primes函数体内使用lambda实现.
# 只能被1跟它本身整除的数. 2, 3, 4, 5 ,6 ,7 ,8 ,9, 10 每一次取余的结果都不是0, 那么它就是质数. 反之, 就不是质数.
# all, all true , false
# filter
# 5 2 3 4
# 6 2 3 4 5


def get_primes(n):
    lst = filter(lambda x: all(x % i != 0 for i in range(2, x)), range(2, n + 1))
    return list(lst)


primes = get_primes(6)
print(primes)
